웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > sql

[SQL] 한글 초성, 자음 검색기능 구현하기

Last Modified : 2015-11-15 / Created : 2015-02-12
14,889
View Count
자음, 모음등의 초성 또는 알파벳 검색기능을 사용하기 위한 방법입니다. 먼저 아래 이미지를 봐주세요.

위처럼 자음 버튼 클릭으로 검색 정렬이 가능함
보시다시피 초성, 자음을 사용한 검색기능을 몇몇 사이트에서는 제공합니다. 이럴 경우 보통 검색어의 첫글자에 해당하는 초성이 포함되었나를 판단하게 됩니다. 그렇기 위해서 우선적으로 다음과 같은 단계가 필요하겠죠.

하나. 각각의 초성 및 자음에 대한 조건문
둘. 위 결과에 따른 쿼리문 작성

그럼 좀 더 알아보기 위해 아래 예제를 참고해 주세요.

! 각각의 초성 및 자음에 대한 조건문


; 아래 예제에서 $query_sts는 사용될 쿼리문을 switch 조건문을 통해 결정하게 됩니다. 그리고 product_name은 데이터베이스에 존재하는 필드 이름이 되겠구요.


<?php
switch($query_sts) {
case 'ㄱ':
$query_sts = "(product_name >= '가' AND product_name < '나')";
break;
case 'ㄴ':
$query_sts = "(product_name >= '나' AND product_name < '다')";
break;
case 'ㄷ':
$query_sts = "(product_name >= '다' AND product_name < '라')";
break;
case 'ㄹ':
$query_sts = "(product_name >= '라' AND product_name < '마')";
break;
case 'ㅁ':
$query_sts = "(product_name >= '마' AND product_name < '바')";
break;
case 'ㅂ':
$query_sts = "(product_name >= '바' AND product_name < '사')";
break;
case 'ㅅ':
$query_sts = "(product_name >= '사' AND product_name < '아')";
break;
case 'ㅇ':
$query_sts = "(product_name >= '아' AND product_name < '자')";
break;
case 'ㅈ':
$query_sts = "(product_name >= '자' AND product_name < '차')";
break;
case 'ㅊ':
$query_sts = "(product_name >= '차' AND product_name < '카')";
break;
case 'ㅋ':
$query_sts = "(product_name >= '카' AND product_name < '타')";
break;
case 'ㅌ':
$query_sts = "(product_name >= '타' AND product_name < '파')";
break;
case 'ㅍ':
$query_sts = "(product_name >= '파' AND product_name < '하')";
break;
case 'ㅎ':
$query_sts = "(product_name >= '하')";
break;
}

$query = "SELECT * FROM Acompany WHERE $query_sts LIMIT 10";
?>


요약해보면 아래와 같습니다. 테이블 Acompany에서 product_name 필드의 특정 값, 즉 폼에서 받아 $query_sts 변수에 저장된 초성값을 이용해 switch 조건문을 사용하고 그에 따른 적절한 쿼리문을 생성하였습니다.

생성된 쿼리문을 적용하여 실행하면 간단히 초성 검색 기능이 가능합니다.

Previous

[SQL] 테이블 안의 컬럼 값 변경, 수정, UPDATE

Previous

[SQL] 문자 바꾸기, 치환, 변환 replace()